const jwt = require('jsonwebtoken')
const { promisify } = require('util')

/**
 *
 * @param {*} id ，payload，用户id
 * @returns jwt token
 */
exports.signToken = (id) =>
  jwt.sign({ id: id }, process.env.JWT_SECRET, {
    expiresIn: process.env.JWT_EXPIRES_IN,
  })

/**
 * jwt.verify不会返回promise，因为我们要在async函数中使用，所以这里需要转成Promise
 * 验证token
 * @param {*} token
 * @returns 返回解析后的payload
 */
exports.verifyToken = async (token) => await promisify(jwt.verify)(token, process.env.JWT_SECRET)
